Use case: encoder mode ¶
Sequence diagram ¶
Code snippet ¶
|
HAL1 |
HAL2 |
|---|---|
LPTIM_HandleTypeDef LptimHandle;
LptimHandle.Instance = LPTIM1;
LptimHandle.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;
LptimHandle.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;
LptimHandle.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH;
LptimHandle.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC;
LptimHandle.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;
LptimHandle.Init.UltraLowPowerClock.Polarity = LPTIM_CLOCKPOLARITY_RISING;
LptimHandle.Init.UltraLowPowerClock.SampleTime = LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION;
LptimHandle.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;
LptimHandle.Init.Trigger.ActiveEdge = LPTIM_ACTIVEEDGE_RISING ;
LptimHandle.Init.Trigger.SampleTime = LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION;
LptimHandle.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO;
LptimHandle.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO;
/* Initialize and configure the LPTIM Instance */
HAL_LPTIM_Init(&LptimHandle);
/* Start LPTIM Encoder mode */
HAL_LPTIM_Encoder_Start(&LptimHandle, 5000);
/* Read the counter value */
uint32_t encoder_count = HAL_LPTIM_ReadCounter(&LptimHandle);
/* Stop Encoder mode when done and deinitialize the LPTIM instance */
HAL_LPTIM_Encoder_Stop(&LptimHandle)
HAL_LPTIM_DeInit(&LPTIM_Handle);
|
hal_lptim_handle_t LPTIM_Handle;
hal_lptim_config_t p_config;
hal_lptim_encoder_config_t p_encoder;
p_config.mode = HAL_LPTIM_CONTINUOUS;
p_config.prescaler = HAL_LPTIM_CLK_SRC_DIV1;
p_config.repetition_counter = 0;
p_config.period = 5000;
p_config.clock_source = HAL_LPTIM_CLK_ENCODER_SUBMODE_1;
/*Set the Encoder Configuration */
p_encoder.input1 = HAL_LPTIM_INPUT1_GPIO;
p_encoder.input2 = HAL_LPTIM_INPUT2_GPIO;
p_encoder.filter = HAL_LPTIM_FDIV1;
/* Initialize and configure the LPTIM Instance */
HAL_LPTIM_Init(&LPTIM_Handle, HAL_LPTIM1);
HAL_LPTIM_SetConfig(&LPTIM_Handle, &p_config);
/* Start LPTIM Encoder mode */
HAL_LPTIM_SetConfigEncoder(&LPTIM_Handle, &p_encoder);
HAL_LPTIM_Start(&LPTIM_Handle);
/* Read the counter value */
uint32_t encoder_count = HAL_LPTIM_GetCounter(&LPTIM_Handle);
/* Stop Encoder mode when done and deinitialize the LPTIM instance */
HAL_LPTIM_Stop(&LPTIM_Handle);
HAL_LPTIM_DeInit(&LPTIM_Handle);
|
Key changes ¶
HAL2 splits configuration from initialization using
HAL_LPTIM_SetConfig().HAL2 configures encoder mode explicitly using
HAL_LPTIM_SetConfigEncoder().HAL2 uses
HAL_LPTIM_GetCounter()instead ofHAL_LPTIM_ReadCounter().

